<?php

require_once('../krn_table.php');
require_once('../commons_constantes.php');
require_once('../commons_utils.php');

tableDefinition
	(TABLE_DEFINITION
	,'tblMariage'
	,WEDDING_DBNAME
	,'MARIAGE'
	,array
		('ID'
		,'ID_COMPTE'
		,'ID_MARIE1'
		,'ID_MARIE2'
		,'DATE_MARIAGE'
		,'CAS_TEST'
		,'DATE_INSERTION'
		,'DATE_MAJ'
		)
	);
	
	
/***********************************************************************************************************
 * Définition des fonctions d'interactions
 ***********************************************************************************************************/

/**
 * Crée et ajoute les informations de mariage pour les mariés d'identifiant 1 et 2
 * @param int $idCompte Identifiant du compte ayant servi à créer le mariage
 * @param int $idMarie1 Identifiant d'un des mariés
 * @param int $idMarie2 Identifiant d'un des mariés
 * @param date $dateMariage Date de mariage
 * @param boolean $casTest Indicateur de cas de test
 * @return int : l'identifiant du mariage créé
 */
function ajouterMariage($idCompte, $idMarie1, $idMarie2, $dateMariage, $casTest=false) {
	$dateInsert = gmdate('c');
	$idInserted = insert
					('tblMariage'
					,array
						('ID_COMPTE'		=> '?'
						,'ID_MARIE1'		=> '?'
						,'ID_MARIE2'		=> '?'
						,'DATE_MARIAGE'		=> '?'
						,'CAS_TEST'			=> '?'
						,'DATE_INSERTION'	=> '?'
						,'DATE_MAJ'			=> '?'
						)
					,array
						($idCompte
						,$idMarie1
						,$idMarie2
						,$dateMariage
						,$casTest
						,$dateInsert
						,$dateInsert
						)
					);
	return $idInserted;
}

/**
 * Retourne le tableau associatif du mariage d'identifiant $idMariage.<br />
 * Retourne un tableau vide si le mariage d'identifiant $idMariage n'existe pas
 * @param $idMariage identifiant du mariage
 * @return array : un tableau vide ou associatif nom de colonne - valeur
 * @throws Exception : code 406 (plusieurs ressources)
 */
function getMariage($idMariage) {
	$mariage = select('tblMariage', '*', 'WHERE ID = ?', array($idMariage));
	if (count($mariage) > 1) {
		throw new Exception('Plusieurs mariages d\'identifiant '.$idMariage.' ont été retournés', ERR_NOT_ACCEPTABLE);
	} elseif (count($mariage) == 1) {
		return $mariage[0];
	}
	return $mariage;
}

/**
 * Retourne un tableau d'identifiants de mariage pour le compte d'identifiant $idCompte<br />
 * Retourne un tableau vide si aucun résultat n'est trouvé
 *
 * @param $idCompte
 * @return array
 */
function getAllIdMariagesByIdCompte($idCompte) {
	$idMariages = select('tblMariage', 'ID', 'WHERE ID_COMPTE = ?', array($idCompte));
	return $idMariages;
}

/**
 * Retourne l'identifiant du mariage le plus récent créé par le compte d'identifiant $idCompte
 * Retourne null si aucun résultat n'a pu être trouvé
 *
 * @param $idCompte
 * @return array
 */
function getLastIdMariagesByIdCompte($idCompte) {
	$idMariage = select('tblMariage', array('ID'), 'WHERE ID_COMPTE = ? ORDER BY DATE_INSERTION DESC LIMIT 1', array($idCompte));
	if (count($idMariage) == 0) {
		return null;
	}
	return $idMariage[0]['ID'];
}
